El problema que hemos tratado en Números de 3 cifras (v1) lo vamos ahora a resolver de forma distinta. Necesitamos mostrar los números de 3 cifras cuyas decenas valen lo mismo que las centenas más las unidades.
En vez de pasar por todos los números posibles y mostrar solamente los que cumplen la condición, ahora pasaremos explícitamente por los números que la cumplen, en un doble bucle.
El siguiente bucle, de hecho, genera todos los pares posibles de enteros entre 0 y 9 (consideramos que u son las unidades y d son las decenas):
int u, d; for (u = 0; u <= 9; u++) { for (d = 0; d <= 9; d++) { cout << u << d << endl; } }
Por ahora solo mostramos cada pareja, pero el programa pasa por todas las combinaciones. Lo interesante es que, para el usuario, lo que sale en la pantalla parecen números de dos cifras. Sólo nosotros sabemos que estan hechos de 2 "trozos" distintos.
Con este bucle montado tenemos el programa casi preparado para poder mostrar los números correctos directamente. La idea es que si tengo las decenas (variable d) y las unidades (variable u), las centenas tienen que ser la resta d - u. Solo hay que tener en cuenta el caso de que coincida que la resta es 0, que haría que el número no tuviera centenas y por tanto no fuera de 3 cifras.
El programa entero es, entonces:
#include <iostream> using namespace std; int main() { int u, d; for (u = 0; u <= 9; u++) { for (d = 0; d <= 9; d++) { if (d - u > 0) { cout << (d - u) << d << u << ' '; } } } }
El orden en que aparecen los números tiene que ver claramente con el orden en que se ejecutan los fors y por tanto no es el orden natural, pero como el problema no especificaba esto...
En preparación